home *** CD-ROM | disk | FTP | other *** search
- /* Copyright 1992 H.Ogasawara(COR.) */
- /* Customized by T.Umeno(ε-δ) 1992 */
- /*#include <stdio.h>*/
- #include <sys_doslib.h>
- #include <time.h>
- #include <microfio.h>
- #include "run.h"
- #include "tbase.h"
-
- unsigned int filesize,
- filetime;
- unsigned char filename[64];
-
- unsigned char downdir[90]= {'\0'};
-
- static unsigned short readmode= 1;
-
- m_file fm;
- int fp= 0, eof= 0;
-
- CloseFile()
- {
- if( fp ){
- if( !readmode && filetime ){
- T_BASE t;
- sectotime( ((int)filetime) - gettz()*60*60, &t );
- Mflush( &fm );
- FILEDATE( fm.fn, ((t.year-1980)<<25)+
- ((t.month)<<21)+
- ((t.day)<<16)+
- ((t.hour)<<11)+
- ((t.min)<<5)+
- ((t.sec)/2) );
- }else
- Mflush( &fm );
- Mclose( &fm );
- }
- fp= 0;
- eof= 0;
- }
-
- unsigned char *
- fnamenode( ptr )
- unsigned char *ptr;
- {
- unsigned char *str;
- unsigned short kanji= 0;
- for( str= ptr ; *ptr ; ptr++ ){
- if( kanji )
- kanji= 0;
- else{
- kanji= iskanji( *ptr );
- if( (*ptr == '/' || *ptr == ':' || *ptr == '\\') && ptr[1] )
- str= ptr+1;
- }
- }
- return str;
- }
-
- static
- nameopen( name )
- unsigned char *name;
- {
- unsigned char buf[256];
- if( *downdir ){
- strcpy( buf, downdir );
- strcat( buf, name );
- return fp= Mcreate( &fm, buf );
- }else if( GETENV( "KOPRO", 0, buf ) >= 0 ){ /* T.Umeno */
- strcat( buf, name );
- return fp= Mcreate( &fm, buf );
- }
- return fp= Mcreate( &fm, name );
- }
-
- OpenFileR( name )
- unsigned char *name;
- {
- CloseFile();
- readmode= 1;
- if( !(fp= Mopen( &fm, name )) ){
- allbreak();
- return 0;
- }
- filesize= Mfsize( &fm );
- last= (filesize>>7)+1;
- {
- unsigned int i= FILEDATE( fm.fn, 0 );
- T_BASE t;
- t.sec= (i & 31)*2;
- t.min= (i>>5) & 63;
- t.hour= (i>>11) & 31;
- t.day= ((i>>16) & 31)+1;
- t.month=((i>>21) & 15);
- t.year= ((i>>25)+1980);
- filetime= timetosec( &t )+ gettz()*60*60;
- }
- return fp;
- }
-
- OpenFileW( name )
- unsigned char *name;
- {
- CloseFile();
- readmode= 0;
- if( !nameopen( name ) )
- allbreak();
- return fp;
- }
-
- WriteFile( buf, wsize )
- unsigned char *buf;
- {
- if( filesize > 0 && size+wsize > filesize ) /* 1992 9/15 */
- wsize= filesize-size;
- if( !Mwrite( &fm, buf, wsize ) ){
- allbreak();
- return -1;
- }
- return 0;
- }
-
- ReadFile( buf, fsize )
- unsigned char *buf;
- {
- if( eof )
- return -1; /* EOF */
- if( fsize >= 1024 && filesize-size < 1024 )
- fsize= 128;
- if( Mread( &fm, buf, fsize ) < fsize )
- eof= 1;
- return fsize;
- }
-
- /*
- break
- */
-
- allbreak()
- {
- CloseFile();
- runsize= timeout= 0;
- ConsoleOpen();
- ConsolePrint( "kopro: Break!\r\n" );
- EndProgram();
- }
-
-